<?php

namespace XLite\Model;

/**
 * Category
 *
 * @see   ____class_see____
 * @since 1.0.0
 *
 * @Entity (repositoryClass="\XLite\Model\Repo\Category")
 * @Table  (name="categories",
 *      indexes={
 *          @Index (name="lpos", columns={"lpos"}),
 *          @Index (name="rpos", columns={"rpos"}),
 *          @Index (name="enabled", columns={"enabled"}),
 *          @Index (name="cleanURL", columns={"cleanURL"})
 *      }
 * )
 */
class Category extends \XLite\Module\CDev\FeaturedProducts\Model\Category
{
    /**
     * Translations (relation). AUTOGENERATED
     *
     * @var    \Doctrine\Common\Collections\ArrayCollection
     * @access protected
     * @see    ____func_see____
     * @since  1.0.0
     *
     * @OneToMany (targetEntity="XLite\Model\CategoryTranslation", mappedBy="owner", cascade={"persist","remove"})
     */
    protected $translations;

    /**
     * Translation getter. AUTOGENERATED
     *
     * @return string
     * @access public
     * @see    ____func_see____
     * @since  1.0.0
     */
    public function getName()
    {
        return $this->getSoftTranslation()->getName();
    }

    /**
     * Translation setter. AUTOGENERATED
     *
     * @param string $value value to set
     *
     * @return void
     * @access public
     * @see    ____func_see____
     * @since  1.0.0
     */
    public function setName($value)
    {
        return $this->getTranslation($this->editLanguage)->setName($value);
    }

    /**
     * Translation getter. AUTOGENERATED
     *
     * @return string
     * @access public
     * @see    ____func_see____
     * @since  1.0.0
     */
    public function getDescription()
    {
        return $this->getSoftTranslation()->getDescription();
    }

    /**
     * Translation setter. AUTOGENERATED
     *
     * @param string $value value to set
     *
     * @return void
     * @access public
     * @see    ____func_see____
     * @since  1.0.0
     */
    public function setDescription($value)
    {
        return $this->getTranslation($this->editLanguage)->setDescription($value);
    }

    /**
     * Translation getter. AUTOGENERATED
     *
     * @return string
     * @access public
     * @see    ____func_see____
     * @since  1.0.0
     */
    public function getMetaTags()
    {
        return $this->getSoftTranslation()->getMetaTags();
    }

    /**
     * Translation setter. AUTOGENERATED
     *
     * @param string $value value to set
     *
     * @return void
     * @access public
     * @see    ____func_see____
     * @since  1.0.0
     */
    public function setMetaTags($value)
    {
        return $this->getTranslation($this->editLanguage)->setMetaTags($value);
    }

    /**
     * Translation getter. AUTOGENERATED
     *
     * @return string
     * @access public
     * @see    ____func_see____
     * @since  1.0.0
     */
    public function getMetaDesc()
    {
        return $this->getSoftTranslation()->getMetaDesc();
    }

    /**
     * Translation setter. AUTOGENERATED
     *
     * @param string $value value to set
     *
     * @return void
     * @access public
     * @see    ____func_see____
     * @since  1.0.0
     */
    public function setMetaDesc($value)
    {
        return $this->getTranslation($this->editLanguage)->setMetaDesc($value);
    }

    /**
     * Translation getter. AUTOGENERATED
     *
     * @return string
     * @access public
     * @see    ____func_see____
     * @since  1.0.0
     */
    public function getMetaTitle()
    {
        return $this->getSoftTranslation()->getMetaTitle();
    }

    /**
     * Translation setter. AUTOGENERATED
     *
     * @param string $value value to set
     *
     * @return void
     * @access public
     * @see    ____func_see____
     * @since  1.0.0
     */
    public function setMetaTitle($value)
    {
        return $this->getTranslation($this->editLanguage)->setMetaTitle($value);
    }

    /**
     * Get category_id
     *
     * @return uinteger $categoryId
     */
    public function getCategoryId()
    {
        return $this->category_id;
    }

    /**
     * Set lpos
     *
     * @param integer $lpos
     */
    public function setLpos($lpos)
    {
        $this->lpos = $lpos;
    }

    /**
     * Get lpos
     *
     * @return integer $lpos
     */
    public function getLpos()
    {
        return $this->lpos;
    }

    /**
     * Set rpos
     *
     * @param integer $rpos
     */
    public function setRpos($rpos)
    {
        $this->rpos = $rpos;
    }

    /**
     * Get rpos
     *
     * @return integer $rpos
     */
    public function getRpos()
    {
        return $this->rpos;
    }

    /**
     * Set enabled
     *
     * @param boolean $enabled
     */
    public function setEnabled($enabled)
    {
        $this->enabled = $enabled;
    }

    /**
     * Get enabled
     *
     * @return boolean $enabled
     */
    public function getEnabled()
    {
        return $this->enabled;
    }

    /**
     * Set cleanURL
     *
     * @param string $cleanURL
     */
    public function setCleanURL($cleanURL)
    {
        $this->cleanURL = $cleanURL;
    }

    /**
     * Get cleanURL
     *
     * @return string $cleanURL
     */
    public function getCleanURL()
    {
        return $this->cleanURL;
    }

    /**
     * Set show_title
     *
     * @param boolean $showTitle
     */
    public function setShowTitle($showTitle)
    {
        $this->show_title = $showTitle;
    }

    /**
     * Get show_title
     *
     * @return boolean $showTitle
     */
    public function getShowTitle()
    {
        return $this->show_title;
    }

    /**
     * Set depth
     *
     * @param integer $depth
     */
    public function setDepth($depth)
    {
        $this->depth = $depth;
    }

    /**
     * Get depth
     *
     * @return integer $depth
     */
    public function getDepth()
    {
        return $this->depth;
    }

    /**
     * Add featuredProducts
     *
     * @param XLite\Module\CDev\FeaturedProducts\Model\FeaturedProduct $featuredProducts
     */
    public function addFeaturedProducts(\XLite\Module\CDev\FeaturedProducts\Model\FeaturedProduct $featuredProducts)
    {
        $this->featuredProducts[] = $featuredProducts;
    }

    /**
     * Get featuredProducts
     *
     * @return Doctrine\Common\Collections\Collection $featuredProducts
     */
    public function getFeaturedProducts()
    {
        return $this->featuredProducts;
    }

    /**
     * Set quickFlags
     *
     * @param XLite\Model\Category\QuickFlags $quickFlags
     */
    public function setQuickFlags(\XLite\Model\Category\QuickFlags $quickFlags)
    {
        $this->quickFlags = $quickFlags;
    }

    /**
     * Get quickFlags
     *
     * @return XLite\Model\Category\QuickFlags $quickFlags
     */
    public function getQuickFlags()
    {
        return $this->quickFlags;
    }

    /**
     * Set membership
     *
     * @param XLite\Model\Membership $membership
     */
    public function setMembership(\XLite\Model\Membership $membership)
    {
        $this->membership = $membership;
    }

    /**
     * Get membership
     *
     * @return XLite\Model\Membership $membership
     */
    public function getMembership()
    {
        return $this->membership;
    }

    /**
     * Get image
     *
     * @return XLite\Model\Image\Category\Image $image
     */
    public function getImage()
    {
        return $this->image;
    }

    /**
     * Add categoryProducts
     *
     * @param XLite\Model\CategoryProducts $categoryProducts
     */
    public function addCategoryProducts(\XLite\Model\CategoryProducts $categoryProducts)
    {
        $this->categoryProducts[] = $categoryProducts;
    }

    /**
     * Get categoryProducts
     *
     * @return Doctrine\Common\Collections\Collection $categoryProducts
     */
    public function getCategoryProducts()
    {
        return $this->categoryProducts;
    }

    /**
     * Add children
     *
     * @param XLite\Model\Category $children
     */
    public function addChildren(\XLite\Model\Category $children)
    {
        $this->children[] = $children;
    }

    /**
     * Get children
     *
     * @return Doctrine\Common\Collections\Collection $children
     */
    public function getChildren()
    {
        return $this->children;
    }

    /**
     * Get parent
     *
     * @return XLite\Model\Category $parent
     */
    public function getParent()
    {
        return $this->parent;
    }
}